home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / 8bit / cislib_b / sectio.act < prev    next >
Text File  |  1995-04-22  |  2KB  |  91 lines

  1. MODULE ; SECTIO.ACT
  2.  
  3. ; The following routines perform
  4. ; direct sector access to a disk
  5. ; drive.
  6.  
  7. PROC SIO=$E459()
  8. MODULE
  9.  
  10. TYPE DCBREC =
  11.   [
  12.     BYTE devID,
  13.          driveNum,
  14.          driveCmd,
  15.          stat
  16.     CARD buf,
  17.          timeOut,
  18.          count,
  19.          sect
  20.   ]
  21.  
  22. DCBREC POINTER DCB
  23. SET DCB = $300
  24.  
  25.  
  26.  
  27. ; SectIO - Call SIO to perform a read
  28. ;   or write of a single sector
  29.  
  30. ;   parameters: drive      drive #
  31. ;               sector     sector #
  32. ;               buffer     address of buffer
  33. ;               density    1,2 = sgl,dbl
  34.  
  35. ;   returns:    SIO error code
  36.  
  37. BYTE FUNC SectIO( BYTE drive, CARD sector, buffer, BYTE density )
  38.     DCB.devID    = '1
  39.     DCB.driveNum = drive
  40.     DCB.buf      = buffer
  41.     DCB.timeOut  = 15
  42.     DCB.sect     = sector
  43.  
  44.     ; Set byte count for proper density
  45.     IF (density = 1) OR (sector <= 3) THEN
  46.         DCB.count = 128
  47.     ELSE
  48.         DCB.count = 256
  49.     FI
  50.  
  51.     SIO() ; Call SIO to perform operation
  52. RETURN( DCB.stat )
  53.  
  54.  
  55.  
  56. ; ReadSector - Call SIO to read a
  57. ;   sector from a disk drive.
  58.  
  59. ;   parameters: drive      drive #
  60. ;               sector     sector #
  61. ;               buffer     address of buffer
  62. ;               density    1,2 = sgl,dbl
  63.  
  64. ;   returns:    SIO error code
  65.  
  66. BYTE FUNC ReadSector( BYTE drive, CARD sector, buffer, BYTE density )
  67.     DCB.driveCmd = 'R
  68.     DCB.stat     = $40
  69.     SectIO( drive, sector, buffer, density )
  70. [ $60 ]
  71.  
  72.  
  73.  
  74. ; WriteSector - Call SIO to read a
  75. ;   sector from a disk drive.
  76.  
  77. ;   parameters: drive      drive #
  78. ;               sector     sector #
  79. ;               buffer     address of buffer
  80. ;               density    1,2 = sgl,dbl
  81.  
  82. ;   returns:    SIO error code
  83.  
  84. BYTE FUNC WriteSector( BYTE drive, CARD sector, buffer, BYTE density )
  85.     DCB.driveCmd = 'W
  86.     DCB.stat     = $80
  87.     SectIO( drive, sector, buffer, density )
  88. [ $60 ]
  89.  
  90. MODULE ; For user
  91.